#ifndef SC_OPENGL_H
#define SC_OPENGL_H

#include "common.h"

#include <stdbool.h>
#include <SDL2/SDL_opengl.h>

struct sc_opengl {
    // 版本的文本描述
    const char *version;
    // 是否为openGL ES版本
    bool is_opengles;
    // 主版本号
    int version_major;
    // 次版本号
    int version_minor;

    const GLubyte *
    (*GetString)(GLenum name);

    void
    (*TexParameterf)(GLenum target, GLenum pname, GLfloat param);

    void
    (*TexParameteri)(GLenum target, GLenum pname, GLint param);

    void
    (*GenerateMipmap)(GLenum target);
};

/*
初始化openGL,此方法依赖SDL窗体相关函数初始化完成并创建了渲染器
@param gl
*/
void
sc_opengl_init(struct sc_opengl *gl);

/*
判断openGL的版本是否满足最低的要求
@param gl
@param minver_major openGL最低主版本号
@param minver_minor openGL最低次版本号
@param minver_es_major openGL ES 最低主版本号
@param minver_es_minor openGL ES 最低次版本号
@return 满足最小版本要求返回true,否则返回false
*/
bool
sc_opengl_version_at_least(struct sc_opengl *gl,
                           int minver_major, int minver_minor,
                           int minver_es_major, int minver_es_minor);

#endif
